package com.sunlake.spring.main.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * JWT配置类
 * 支持HMAC或RSA两种签名方式。默认使用HMAC(secret)。如果配置了privateKeyPem/publicKeyPem或路径，则自动切换到RSA。
 */
@Configuration
@ConfigurationProperties(prefix = "jwt")
@Data
public class JwtConfig {
    private final Integer EXPIRE_TIME = 7200;
    private final Integer REFRESH_TIME = 604800;
    // HMAC密钥（未配置RSA时使用）
    private String secret = "sunlake-secret-key-change-this-in-production";
    // 令牌有效期（秒）
    private long expireTime = EXPIRE_TIME;
    // 刷新令牌有效期（秒）
    private long refreshExpireTime = REFRESH_TIME;
    // 令牌前缀
    private String tokenPrefix = "Bearer ";
    // 请求头名称
    private String header = "Authorization";

    // ================= RSA 相关（任选其一：直接PEM或文件路径） =================
    // 私钥PEM内容（PKCS8格式，包含-----BEGIN PRIVATE KEY-----）
    private String privateKeyPem;
    // 公钥PEM内容（SPKI格式，包含-----BEGIN PUBLIC KEY-----）
    private String publicKeyPem;

    // 私钥文件路径（如果提供则优先于privateKeyPem）
    private String privateKeyPath;
    // 公钥文件路径（如果提供则优先于publicKeyPem）
    private String publicKeyPath;
}